package com.frejoys.service;


import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.IService;
import com.frejoys.common.vo.common.AdcodeVo;
import com.frejoys.common.vo.common.AreaItemVo;
import com.frejoys.dao.entity.Area;

import java.util.List;
import java.util.Map;

public interface AreaService extends IService<Area> {

    default Area getOnly(QueryWrapper<Area> wrapper) {
        wrapper.last("limit 1");
        return this.getOne(wrapper);
    }

    default Area getOnly(LambdaQueryWrapper<Area> wrapper) {
        wrapper.last("limit 1");
        return this.getOne(wrapper);
    }

    // 获取省
    List<Area> getProvince();

    // 获取市
    List<Area> getCity();

    // 获取区县
    List<Area> getDistrict();

    // 获取指定省的市
    List<Area> getCity(String adcode);

    // 获取指定市的区县
    List<Area> getDistrict(String adcode);

    // 获取全部，并且adecode为key，name为value
    Map<String, String> getNameMap();

    /**
     * 处理后可用的省市区
     * @return
     */
    List<AreaItemVo> getDisArea();

    /**
     * 将省市区包装层级
     * @param text
     * @param value
     * @param children
     * @return
     */
    AreaItemVo getAreaItemData(String text, String value, List<AreaItemVo> children);

    /**
     * 根据区县编号获取省市区编号
     * @param district
     * @return
     */
    AdcodeVo getProvinceCityDistrict(String district);

}
